<?php

if (isset($_POST['ACCION'])) {
  $accion = $_POST['ACCION'];
  $id_cliente = $_POST['id_cliente'];
} else {
  exit();
}

// Se crea el pedido
require_once('../php/class/pedidos.class.php');
$oPedido = new pedido();
$oPedido->pedido_actual($id_cliente);

//se crea el detalle del pedido
require_once('../php/class/detalles_pedidos.class.php');
$oDetallePedido = new detalle_pedido();



switch ($accion) {

  case "COMPRAR":

    //actualizo el pedido con las cantidades del form
    $el_detalle = $oDetallePedido->detallar_pedido_simple($oPedido->ID);
    for ($i = 0; $i < count($el_detalle['ID']); $i++) {
      $oDetallePedido->search($el_detalle['ID'][$i]);

      //descuento la cantidad actual
      $cantidad = $oDetallePedido->CANTIDAD;
      $precio_unitario = $oDetallePedido->PRECIO_UNITARIO;
      $monto_restar = $cantidad * $precio_unitario;
      $costo_total_nuevo = $oPedido->COSTO_TOTAL - $monto_restar;
      $oPedido->COSTO_TOTAL = $costo_total_nuevo;

      if (!$oPedido->modify()) {
        $response = array("RESULT" => "1", "ERROR" => "Error al descontar al pedido");
        echo json_encode($response);
        exit();
      }

      //nueva cantidad
      $el_id = 'cantidad_' . $el_detalle['ID'][$i];
      $oDetallePedido->CANTIDAD = $_POST[$el_id];

      if (!$oDetallePedido->modify()) {
        $response = array("RESULT" => "1", "ERROR" => "Error al actualizar al pedido");
        echo json_encode($response);
        exit();
      }

      //sumo la nueva cantidad
      $cantidad = $oDetallePedido->CANTIDAD;
      $precio_unitario = $oDetallePedido->PRECIO_UNITARIO;
      $monto_sumar = $cantidad * $precio_unitario;
      $costo_total_nuevo = $oPedido->COSTO_TOTAL + $monto_sumar;
      $oPedido->COSTO_TOTAL = $costo_total_nuevo;

      if (!$oPedido->modify()) {
        $response = array("RESULT" => "1", "ERROR" => "Error al sumar al pedido");
        echo json_encode($response);
        exit();
      }
    }

    //veo las cantidades de los articulos
    $el_detalle = $oDetallePedido->cantidades_articulos($oPedido->ID);

    //se crea el articulo
    require_once('../php/class/articulos.class.php');
    $oArticulo = new articulo();

    for ($i = 0; $i < count($el_detalle['ID_ARTICULO']); $i++) {
      $oArticulo->search($el_detalle['ID_ARTICULO'][$i]);


      //compara el stock existente con lo pedido
      if ($oArticulo->ID_TIPO_STOCK == 0) { //es sin pedido
        $cantidad_stock = $oArticulo->CANTIDAD_DISPONIBLE;
        $cantidad_pedido = $el_detalle['SUMA'][$i];

        if ($cantidad_pedido > $cantidad_stock) {
          $response = array("RESULT" => "1", "ERROR" => "Sólo quedan " . $cantidad_stock . " de " . $oArticulo->NOMBRE);
          echo json_encode($response);
          exit();
        }
      }
    }

    //actualizo el stock
    $los_articulos_pedidos = $oDetallePedido->detallar_pedido_simple($oPedido->ID);

    for ($i = 0; $i < count($los_articulos_pedidos['ID']); $i++) {

      $oArticulo->search($los_articulos_pedidos['ID_ARTICULO'][$i]);

      //compara el stock existente con lo pedido
      if ($oArticulo->ID_TIPO_STOCK == 0) { //sin pedido (maneja stock)
        $cantidad_stock = $oArticulo->CANTIDAD_DISPONIBLE;
        $cantidad_pedido = $los_articulos_pedidos['CANTIDAD'][$i];

        if ($cantidad_pedido > $cantidad_stock) {
          $response = array("RESULT" => "1", "ERROR" => "Error al actualizar stock");
          echo json_encode($response);
          exit();
        } else {
          //resta la cantidad al stock
          $cantidad_stock = $cantidad_stock - $cantidad_pedido;
          //guarda la nueva cantidad
          $oArticulo->CANTIDAD_DISPONIBLE = $cantidad_stock;
          if (!@$oArticulo->modify()) {
            $response = array("RESULT" => "1", "ERROR" => "Error descontando articulos de stock");
            echo json_encode($response);
            exit();
          }
        }
      }
    }

    $oPedido->ID_STATUS = 3; //en proceso
    $oPedido->FECHA_PEDIDO = date('Y-m-d');
    $oPedido->FECHA_ENTREGA = calcula_dia_entrega($oPedido->ID, $oPedido->FECHA_PEDIDO);
    $oPedido->CANTIDAD_TOTAL = $_POST['total_lista'];
    
    if (!@$oPedido->modify()) {
      $response = array("RESULT" => "1", "ERROR" => "Error actualizando el pedido");
      echo json_encode($response);
      exit();
    } else {
      //ACTUALIZAR TODOS:
      if (!$oDetallePedido->status_all($oPedido->ID, 3)) {
        $response = array("RESULT" => "1", "ERROR" => "Error en el detalle del pedido");
        echo json_encode($response);
        exit();
      } else {

        require_once('../php/class/clientes.class.php');
        $oCliente = new cliente();
        $oCliente->search($id_cliente);
        
        //mail de compra al cliente
        mail_compra($oCliente->MAIL);
        
        //mail de venta al admin
        mail_venta();
        
        $response = array("RESULT" => "0", "ERROR" => "none");
        echo json_encode($response);
        exit();
      }
    }

    break;

  case "DELETE":
    $id = $_POST['id'];
    $oDetallePedido->search($id);

    $id_pedido = $oDetallePedido->ID_PEDIDO;
    $cantidad = $oDetallePedido->CANTIDAD;
    $precio_unitario = $oDetallePedido->PRECIO_UNITARIO;

    if (!$oDetallePedido->delete()) {
      $response = array("RESULT" => "1", "ERROR" => "Error al borrar artículo");
      echo json_encode($response);
      exit();
    } else {

      //borra del monto total del pedido
      $monto_restar = $cantidad * $precio_unitario;
      $costo_total_nuevo = $oPedido->COSTO_TOTAL - $monto_restar;
      $oPedido->COSTO_TOTAL = $costo_total_nuevo;

      if (!$oPedido->modify()) {
        $response = array("RESULT" => "1", "ERROR" => "Error al borrar monto de artículo");
        echo json_encode($response);
        exit();
      } else {
        $response = array("RESULT" => "2", "MSG" => "Borrado");
        echo json_encode($response);
        exit();
      }
    }
    break;
}
?>
